package template;

import br.com.map.model.BixoVirtual;

public abstract class Estado {

    public abstract void decrementaStatus(BixoVirtual bx);

    public void chegaAtributosCriticos(BixoVirtual bx) {
        boolean fomeCritico = (bx.getFome() >= 80);
        boolean sonoCritico = (bx.getSono() >= 80);
        boolean felicidadeCritico = (bx.getFelicidade() <= 20);
        boolean fomeOtimo = bx.getFome() <=  20;
        boolean sonoOtimo = bx.getSono() <= 20;
        boolean felicidadeOtimo = bx.getFelicidade() >= 80;

        if (fomeCritico && sonoCritico && felicidadeCritico)
            bx.setSaude(bx.getSaude() - 5);
        else if ((fomeCritico && sonoCritico) || (fomeCritico && felicidadeCritico) || (felicidadeCritico && sonoCritico))
            bx.setSaude(bx.getSaude() - 3);
        else if (fomeCritico || sonoCritico || felicidadeCritico)
            bx.setSaude(bx.getSaude() - 1);
        
        if (fomeOtimo && sonoOtimo && felicidadeOtimo)
            bx.setSaude(bx.getSaude() + 5);
        else if ((fomeOtimo && sonoOtimo) || (fomeOtimo && felicidadeOtimo) || (felicidadeOtimo && sonoOtimo))
            bx.setSaude(bx.getSaude() + 3);
        else if (fomeOtimo || sonoOtimo || felicidadeOtimo)
            bx.setSaude(bx.getSaude() + 1);
    }

}
